package com.punai.customer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.punai.common.core.page.TableDataInfo;
import com.punai.customer.domain.CusGxLinkGk;
import com.punai.customer.domain.bo.FeatureRes1;
import com.punai.customer.domain.vo.CusGxFeatureLinkGkVo;
import com.punai.customer.domain.vo.CusLinkGkVo;
import com.punai.gk.domain.vo.SimplifyVo;

import java.util.List;

/**
 * 标准费用项关联归口Service接口
 *
 * @author zhx
 * @date 2023-03-28
 */
public interface ICusGxLinkGkService extends IService<CusGxLinkGk>
{
    /**
     * 查询标准费用项关联归口
     *
     * @param id 标准费用项关联归口主键
     * @return 标准费用项关联归口
     */
    public CusGxLinkGk selectCusGxLinkGkById(String id);

    /**
     * 查询标准费用项关联归口列表
     *
     * @param cusGxLinkGk 标准费用项关联归口
     * @return 标准费用项关联归口集合
     */
    public TableDataInfo selectCusGxLinkGkList(CusGxLinkGk cusGxLinkGk);

    List<CusGxLinkGk> getChildren(String gxId,Long companyId);

    /**
     * 新增标准费用项关联归口
     *
     * @param cusGxLinkGk 标准费用项关联归口
     * @return 结果
     */
    public int insertCusGxLinkGk(CusGxLinkGk cusGxLinkGk);

    public String insertCusGxFeatureLinkGk(List<CusGxFeatureLinkGkVo> cusGxFeatureLinkGkVos,Long companyId);

    /**
     * 修改标准费用项关联归口
     *
     * @param cusLinkGkVo 标准费用项关联归口
     * @return 结果
     */
    public int updateCusGxLinkGk(CusLinkGkVo cusLinkGkVo);

    public int setSubpackagePattern(Long companyId, CusLinkGkVo cusLinkGkVo);

    /**
     * 批量删除标准费用项关联归口
     *
     * @param ids 需要删除的标准费用项关联归口主键集合
     * @return 结果
     */
    public int deleteCusGxLinkGkByIds(String[] ids);

//    selectCusGxLinkFeatureByGxId

    /**
     * 删除标准费用项关联归口信息
     *
     * @param id 标准费用项关联归口主键
     * @return 结果
     */
    public int deleteCusGxLinkGkById(String id,Long companyId);

    List<FeatureRes1> getGxLinkFeature(String id, Long companyId);

    int clearLinkGk(String id,String specId,Long companyId);

    int deleteFeatureLinkGk(String id,String gxId,Long companyId);

    List<SimplifyVo> getHistoryGx(String specId, String gkType);
}
